use super::crypt_types::{CRYPT_EAL_LibCtx, CRYPT_EAL_ProvMgrCtx, CRYPT_EAL_Func};
use super::crypt_eal_implprovider::{CRYPT_EAL_ImplProviderInit, CRYPT_EAL_ProcessFuncCb};
use crate::bsl::bsl_params::BSL_Param;
use crate::bsl::bsl_sal::BSL_SAL_LibFmtCmd;
unsafe extern "C" {
    pub fn CRYPT_EAL_LibCtxNew() -> *mut CRYPT_EAL_LibCtx;
}
unsafe extern "C" {
    pub fn CRYPT_EAL_LibCtxFree(libCtx: *mut CRYPT_EAL_LibCtx);
}
unsafe extern "C" {
    pub fn CRYPT_EAL_ProviderLoad(
        libCtx: *mut CRYPT_EAL_LibCtx,
        cmd: BSL_SAL_LibFmtCmd,
        providerName: *const ::std::os::raw::c_char,
        param: *mut BSL_Param,
        mgrCtx: *mut *mut CRYPT_EAL_ProvMgrCtx,
    ) -> i32;
}
unsafe extern "C" {
    pub fn CRYPT_EAL_ProviderRegister(
        libCtx: *mut CRYPT_EAL_LibCtx,
        providerName: *const ::std::os::raw::c_char,
        init: CRYPT_EAL_ImplProviderInit,
        param: *mut BSL_Param,
        mgrCtx: *mut *mut CRYPT_EAL_ProvMgrCtx,
    ) -> i32;
}
unsafe extern "C" {
    pub fn CRYPT_EAL_ProviderIsLoaded(
        libCtx: *mut CRYPT_EAL_LibCtx,
        cmd: BSL_SAL_LibFmtCmd,
        providerName: *const ::std::os::raw::c_char,
        isLoaded: *mut bool,
    ) -> i32;
}
unsafe extern "C" {
    pub fn CRYPT_EAL_ProviderCtrl(
        ctx: *mut CRYPT_EAL_ProvMgrCtx,
        cmd: i32,
        val: *mut ::std::os::raw::c_void,
        valLen: u32,
    ) -> i32;
}
unsafe extern "C" {
    pub fn CRYPT_EAL_ProviderGetCaps(
        ctx: *mut CRYPT_EAL_ProvMgrCtx,
        cmd: i32,
        cb: CRYPT_EAL_ProcessFuncCb,
        args: *mut ::std::os::raw::c_void,
    ) -> i32;
}
unsafe extern "C" {
    pub fn CRYPT_EAL_ProviderUnload(
        libCtx: *mut CRYPT_EAL_LibCtx,
        cmd: BSL_SAL_LibFmtCmd,
        providerName: *const ::std::os::raw::c_char,
    ) -> i32;
}
unsafe extern "C" {
    pub fn CRYPT_EAL_ProviderSetLoadPath(
        libCtx: *mut CRYPT_EAL_LibCtx,
        searchPath: *const ::std::os::raw::c_char,
    ) -> i32;
}
unsafe extern "C" {
    pub fn CRYPT_EAL_ProviderGetFuncs(
        libCtx: *mut CRYPT_EAL_LibCtx,
        operaId: i32,
        algId: i32,
        attribute: *const ::std::os::raw::c_char,
        funcs: *mut *const CRYPT_EAL_Func,
        provCtx: *mut *mut ::std::os::raw::c_void,
    ) -> i32;
}
pub type CRYPT_EAL_ProviderProcessCb = ::std::option::Option<
    unsafe extern "C" fn(ctx: *mut CRYPT_EAL_ProvMgrCtx, args: *mut ::std::os::raw::c_void) -> i32,
>;
unsafe extern "C" {
    pub fn CRYPT_EAL_ProviderProcessAll(
        ctx: *mut CRYPT_EAL_LibCtx,
        cb: CRYPT_EAL_ProviderProcessCb,
        args: *mut ::std::os::raw::c_void,
    ) -> i32;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct __locale_data {
    pub _address: u8,
}
